import {
	apiGetBanner,
	userRegisterApi,
	userRechargeApi,
	getUserAddressListApi,
	addUserAddressApi,
	deleteUserAddressApi,
	getShopStoreAddressApi,
	getStoreShopDataApi,
	userOrderDataApi,
	getAccountBalanceApi,
	getOrdersByWxuserIdApi
} from "../api/apis"

import {
	defineStore
} from "pinia"
import {
	storage
} from "../utils/storageAdapter.js"



export const userInfo = defineStore("userInfoData", {
	state: () => {
		userinfoData: {}
		wxUserAccount: {}
		ImgUrl: "http://127.0.0.1:3009"
		userOrderData1: []


	},
	actions: {
		// 获取用户的信息
		async getUserInfo() {

			let res = await apiGetBanner({
				userId: 1
			})

			// console.log(res, "这是返回的信息dwdwdw")

		},
		// 获取用户的信息
		async userLogin() {
			// console.log("这是获取用户信息的函数")

			let res = await new Promise((resolve, reject) => {
				uni.getStorage({
					key: 'userinfo',
					success(res) {
						const userData = JSON.parse(res.data); // 将 JSON 字符串转回对象
						// console.log("读取到的用户信息:", userData);
						resolve(userData)
					},
					fail(err) {
						console.warn("未找到 Token:", err);
						resolve(null); // 如果没有 token，则返回 null
					}
				});
			});

			this.userinfoData = res

			let result = await new Promise((resolve, reject) => {
				uni.getStorage({
					key: 'wxUserAccount',
					success(res) {
						const userData = JSON.parse(res.data); // 将 JSON 字符串转回对象
						// console.log("读取到的用户信息:", userData);
						resolve(userData)
					},
					fail(err) {
						console.warn("未找到 Token:", err);
						resolve(null); // 如果没有 token，则返回 null
					}
				});
			});

			this.wxUserAccount = result
			// console.log(res, "这是接出来的数据")

		},

		// 用户登录或注册

		async userRegister(data) {
			// console.log(data, "这是传过来的数据")
			let res = await userRegisterApi(data)

			// console.log(res.data.data, "绝对零度")
			if (res.data.code == 200) {

				let obj = {
					avatarUrl: res.data.data.avatarUrl,
					nickname: res.data.data.nickname,
					openid: res.data.data.openid,
					phoneNumber: res.data.data.phoneNumber,
					wxLoginCode: res.data.data.wxLoginCode,
				}

				uni.setStorage({
					key: 'userinfo', // 存储的 key 名称
					data: JSON.stringify(obj), // 要保存的数据
					success() {
						console.log("Token保存成功:");
					},
					fail(err) {
						console.error("Token保存失败:", err);
					}
				});
				this.wxUserAccount = res.data.data.wxUserAccount
				uni.setStorage({
					key: 'wxUserAccount', // 存储的 key 名称
					data: JSON.stringify(res.data.data.wxUserAccount), // 要保存的数据
					success() {
						console.log("Token保存成功:");
					},
					fail(err) {
						console.error("Token保存失败:", err);
					}
				});


			} else {
				this.wxUserAccount = {}
				console.log("我没动什么啊")
			}


		},
		//用户充值
		async userRecharge(data) {
			// console.log(data, "充值")
			let res = await userRechargeApi(data)

			if (res.data.code == 200) {
				// if(this.wxUserAccount!={}){
				this.wxUserAccount = res.data.data
				// this.wxUserAccount?.balance = res.data.data.balance
				// this.wxUserAccount?.updatedAt = res.data.data.updatedAt
				// }
				this.wxUserAccount.balance = res.data.data.balance
				this.wxUserAccount.updatedAt = res.data.data.updatedAt
				let accountData = this.wxUserAccount
				// console.log(this.userinfoData.wxUserAccount, "userinfoData123131312131")
				uni.setStorage({
					key: 'wxUserAccount', // 存储的 key 名称
					data: JSON.stringify(accountData), // 要保存的数据
					success() {
						console.log("Token保存成功:");
					},
					fail(err) {
						console.error("Token保存失败:", err);
					}
				});

				return res.data.code
				// console.log(res, "这是账号充值返回来的数据")
			} else {
				// console.log(res, "充值失败了")
			}

		},

		async getUserAddressList(data) {
			let res = await getUserAddressListApi(data)

			if (res.data.code == 200) {
				return res.data.data
				// console.log(res.data.data,"这是用户列表")
			} else {
				return []
			}

		},
		// 添加用户的收货地址
		async addUserAddressApi(data) {
			// console.log(data,"添加收货地址")
			let res = await addUserAddressApi(data)

			// console.log(res.data)
			if (res.data.code == 200) {
				return true
			} else {
				return false
			}



		},
		// 删除用户的收货地址
		async deleteUserAddress(data) {
			// console.log(data,"添加收货地址")
			let res = await deleteUserAddressApi(data)

			// console.log(res.data)
			if (res.data.code == 200) {
				return true
			} else {
				return false
			}



		},
		//获取店铺地址
		async getShopStoreAddress(data) {
			let res = await getShopStoreAddressApi(data)
			// console.log(res.data, "这是店铺地址")
			if (res.data.code == 200) {
				return res.data.data
			} else {
				return []
			}
		},
		// 图片地址api
		getimgUrl() {
			return "http://127.0.0.1:3009"
		},


		//获取店铺的商品
		async getStoreShopData(data) {
			let res = await getStoreShopDataApi(data)
			// console.log(res,"res")
			if (res.data.code == 200) {
				return res.data.data
			} else {
				return []
			}
		},

		// 用户下单的接口
		async userOrderData(data) {
			let res = await userOrderDataApi(data)
			// console.log(res,"这是下单后返回来的接口")
			if (res.data.code == 200) {
				return {
					code: 200,
					orderNumber: res.data.data.orderNumber
				}
			} else {
				return {
					code: 400
				}
			}
			// return res
		},

		//获取用户的账号信息
		async getAccountBalance(data) {
			let res = await getAccountBalanceApi(data)
			// console.log(res, "这是用户账号信息")
			if (res.data.code == 200) {
				uni.setStorage({
					key: 'wxUserAccount', // 存储的 key 名称
					data: JSON.stringify(res.data.data), // 要保存的数据
					success() {
						// console.log("Token保存成功:");
					},
					fail(err) {
						// console.error("Token保存失败:", err);
					}
				});

				this.wxUserAccount = res.data.data
			} else {
				this.wxUserAccount = {}
			}
		},

		async getOrdersByWxuserId(data) {
			let res = await getOrdersByWxuserIdApi(data)
			console.log(res.data.data, "这是用户的订单数据")
			if (res.data.code == 200) {
				this.userOrderData1 = res.data.data
				return  res.data.data
			}else{
				this.userOrderData1 = []
				return []
			}
		},
		
		//这是获取特定的订单类型数据的方法
		getOrderType(data){
			// this.userOrderData1.filter
			// console.log(this.userOrderData1," this.userOrderData1")
			return this.userOrderData1.filter(order => {
					
						return order.status === data;
					}).length;
		}

	}

})